package org.eda.actividad4;


import java.util.Iterator;


public class ListaCandidatos {
	
	private static ListaCandidatos miListaCandidatos = new ListaCandidatos();
	private LinkedBinarySearchTree<Candidato> miLista;

	


	private ListaCandidatos(){
		miLista = new LinkedBinarySearchTree<Candidato>();
	}
	
	public LinkedBinarySearchTree<Candidato> getLista(){
		return this.miLista;
	}


	public static ListaCandidatos getListaCandidatos(){
		return miListaCandidatos;
	}
	
	public void anadirCandidato(String pNombre, String pApellidos, String pPartido, String pProvincia, String pMunicipio){
		Candidato can = new Candidato(pNombre, pApellidos, pPartido, pProvincia,pMunicipio);
		
		if(this.miLista.isEmpty()){
			this.miLista.addElement(can);
		}else{
			if(this.buscarCandidato(pNombre, pApellidos) == null){
				this.miLista.addElement(can);
			}
		}
	}
	
	public Candidato buscarCandidato(String pNombre, String pApellidos){
		Candidato canBuscado = null;
		
		if(!this.miLista.isEmpty()){
			Candidato act = null;
			Boolean enc = false;
			Iterator<Candidato> itr= miLista.iteratorInOrder();
			while(itr.hasNext() && enc == false){
				act = itr.next();
				if( act.getNombre().equals(pNombre) && act.getApellidos().equals(pApellidos)){
					enc = true;
					canBuscado= act;
				}
			}	
		}
		return canBuscado;
	}
	
	
	private void borrarLista(){
		Candidato act = null;
		if(!this.miLista.isEmpty()){
			Iterator<Candidato> itr= miLista.iteratorInOrder();
			while(itr.hasNext()){
				act = itr.next();
				this.miLista.removeElement(act);
			}
		}
	}
	
	public void borrarCandidato(String pNombre, String pApellidos){
		Candidato canBorrado=null;
		
		if(!this.miLista.isEmpty()){
		
			canBorrado = this.buscarCandidato(pNombre, pApellidos);
			if (canBorrado ==null ){
				System.out.println("No se ha podido eliminar a el candidato porque no se encontraba en la lista.");
			}else{
				miLista.removeAllOccurrences(canBorrado);
				}
		}
	
	}




	
}
